/**
 *
 */
package quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.KeyMatcher;
import quartz.job.HelloJobListener;
import quartz.listener.MySchedulerListener;
import quartz.listener.MyTriggerListener;

/**
 * joblistener
 */
public class test5 {
    public static void main(String[] args) throws SchedulerException {
        // 1.调度器(Scheduler)，从工厂中获取调度的实例
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // 2.任务实例（JobDetail）
        JobDetail jobDetail = JobBuilder.newJob(HelloJobListener.class)// 加载任务类，与hellojob完成绑定
                .withIdentity("job1", "group1").build();
        SimpleScheduleBuilder.simpleSchedule();
        // 3:触发器（Trigger）
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")// 参数1：触发器的唯一实例，参数2：触发器务组的名称
                .startNow()// 马上启动触发器
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1))// 每5秒重复执行，去掉这行就只执行一次就结束
                .build();
        // 4.让调度器管理任务触发器，保证按照触发器定义的条件执行任务
        scheduler.scheduleJob(jobDetail, trigger);
        // 创建并注册一个全局的trigger listener
//		scheduler.getListenerManager().addTriggerListener(new MyTriggerListener("trigger listener"),
//				EverythingMatcher.allTriggers());
        // 创建并注册一个局部的trigger listener
        scheduler.getListenerManager().addTriggerListener(new MyTriggerListener("trigger listener"),
                KeyMatcher.keyEquals(TriggerKey.triggerKey("trigger1", "group1")));

        scheduler.getListenerManager().addSchedulerListener(new MySchedulerListener());// 添加scheduler监听
        // 启动
        scheduler.start();
    }
}
